libostree: Add ostree_bootconfig_parser_clone()
authorColin Walters <walters@verbum.org>
Mon, 17 Mar 2014 23:21:05 +0000 (19:21 -0400)
committerColin Walters <walters@verbum.org>
Wed, 19 Mar 2014 13:49:55 +0000 (09:49 -0400)
This will be necessary to fix ostree_deployment_clone(), but is
potentially useful on its own for other consumers.

src/libostree/ostree-bootconfig-parser.c
src/libostree/ostree-bootconfig-parser.h

index e660685896fb09db03a09cda2ba4bdf678642c71..f002a18889cdf242d6143a024bab19dcef00858b 100644 (file)
@@ -38,6 +38,30 @@ typedef GObjectClass OstreeBootconfigParserClass;
 
 G_DEFINE_TYPE (OstreeBootconfigParser, ostree_bootconfig_parser, G_TYPE_OBJECT)
 
+/**
+ * ostree_bootconfig_parser_clone:
+ * @self: Bootconfig to clone
+ * 
+ * Returns: (transfer full): Copy of @self
+ */
+OstreeBootconfigParser *
+ostree_bootconfig_parser_clone (OstreeBootconfigParser *self)
+{
+  OstreeBootconfigParser *parser = ostree_bootconfig_parser_new ();
+  guint i;
+  GHashTableIter hashiter;
+  gpointer k, v;
+
+  for (i = 0; i < self->lines->len; i++)
+    g_ptr_array_add (parser->lines, g_variant_ref (self->lines->pdata[i]));
+
+  g_hash_table_iter_init (&hashiter, self->options);
+  while (g_hash_table_iter_next (&hashiter, &k, &v))
+    g_hash_table_replace (parser->options, g_strdup (k), g_strdup (v));
+
+  return parser;
+}
+
 gboolean
 ostree_bootconfig_parser_parse (OstreeBootconfigParser  *self,
                                 GFile           *path,
index 0761016966761c5797c9ca4c02bbb720faff4d34..629d1718083ced2337e4fb7caae8bb1832c5150f 100644 (file)
@@ -34,6 +34,8 @@ GType ostree_bootconfig_parser_get_type (void) G_GNUC_CONST;
 
 OstreeBootconfigParser * ostree_bootconfig_parser_new (void);
 
+OstreeBootconfigParser * ostree_bootconfig_parser_clone (OstreeBootconfigParser *self);
+
 gboolean ostree_bootconfig_parser_parse (OstreeBootconfigParser  *self,
                                          GFile           *path,
                                          GCancellable    *cancellable,